home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 081 / obug_103.arc / FIXDATE.ASM next >
Encoding:
Assembly Source File  |  1988-03-01  |  2.8 KB  |  112 lines

  1. CODE     SEGMENT  BYTE PUBLIC 'CODE'
  2.          ASSUME   CS:CODE,DS:CODE
  3.  
  4. ENTRY:   mov      ax, ds                     ; Blych
  5.          add      ax, 10H
  6.          mov      ds, ax
  7.  
  8.          mov      dx, Offset STARTmsg        ; Say HELLO
  9.          mov      ah, 9
  10.          int      21H
  11.  
  12.          mov      dx, Offset PROGNAME        ; Open Opus.Exe
  13.          mov      ax, 3d02H
  14.          int      21H
  15.          jc       $OPNerr
  16.  
  17.          mov      di, ax                     ; Preserve handle
  18.  
  19.          mov      bx, ax                     ; LSeek
  20.          xor      cx, cx
  21.          mov      dx, 0c7c0H
  22.          mov      ax,  4200H
  23.          int      21H
  24.  
  25.          mov      bx, di                     ; See what's there
  26.          mov      cx, 2
  27.          mov      dx, Offset BUFFER
  28.          mov      ah, 3fH
  29.          int      21H
  30.          jc       $RDerr
  31.  
  32.          cmp      BUFFER, 04b9H
  33.          jne      $DATAerr
  34.  
  35.          mov      bx, di                     ; LSeek
  36.          xor      cx, cx
  37.          mov      dx, 0c7c0H
  38.          mov      ax,  4200H
  39.          int      21H
  40.  
  41.          mov      bx, di                     ; Write new data
  42.          mov      cx, 35
  43.          mov      dx, Offset PATCH
  44.          mov      ah, 40H
  45.          int      21H
  46.          jc       $WTerr
  47.  
  48.          mov      bx, di                     ; LSeek
  49.          mov      cx, 2
  50.          mov      dx, 387eH
  51.          mov      ax, 4200H
  52.          int      21H
  53.  
  54.          mov      bx, di                     ; Write new data
  55.          mov      cx, 1
  56.          mov      dx, Offset NEWVERS
  57.          mov      ah, 40H
  58.          int      21H
  59.          jc       $WTerr
  60.  
  61.          mov      bx, di
  62.          mov      ah, 3eH                    ; Close file
  63.          int      21H
  64.  
  65.          mov      dx, Offset DONEmsg         ; Say BYE, go back to DOS
  66.          mov      ah, 9
  67.          int      21H
  68.          mov      ax, 4c00H
  69.          int      21H
  70.  
  71. $DATAerr:mov      dx, Offset DATAmsg
  72.          jmp      short $FATAL
  73.  
  74. $RDerr:  mov      dx, Offset READmsg
  75.          jmp      short $FATAL
  76.  
  77. $WTerr:  mov      dx, Offset WRTmsg
  78.          jmp      short $FATAL
  79.  
  80. $OPNerr: mov      dx, Offset OPENmsg
  81. $FATAL:  mov      ah, 9
  82.          int      21H
  83.          mov      ax, 4c01H                  ; ErrorLevel==1
  84.          int      21H
  85.  
  86.  
  87.  
  88.  
  89.          ;
  90.          ;--- Data
  91.          ;
  92. STARTmsg db       'OPUS SlimePatch 1$'
  93. DONEmsg  db       ', finished.', 0dH, 0aH, '$'
  94.  
  95. PROGNAME db       'OPUS.EXE', 0
  96. OPENmsg  db       'Can''t open OPUS.EXE$'
  97. DATAmsg  db       'Wrong EXE version$'
  98. READmsg  db       'Can''t read OPUS.EXE$'
  99. WRTmsg   db       'Can''t write OPUS.EXE$'
  100.  
  101. PATCH    db       83H, 46H,0faH, 01H
  102.          db       83H, 56H, 04H, 00H
  103.          db       40 DUP(90H)
  104. NEWVERS  db       'b', 0
  105.  
  106. BUFFER   dw       0
  107.  
  108.  
  109. CODE     ENDS
  110. END
  111.  
  112.